package com.heima.controller;

import com.heima.service.CommonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

import java.util.UUID;

@RestController
@RequestMapping("/api/vm-service/sku")
public class CommonControler {
    @Autowired
    private CommonService commonService;


    // 从配置文件读取上传路径和访问前缀（请在application.yml或其他配置文件中配置相关属性）
    @Value("${upload.base-path}")
    private String basePath;  // 本地存储根目录，例如：/upload/images

    @Value("${upload.access-prefix}")
    private String accessPrefix;  // 访问URL前缀，例如：https://localhost:9999/upload/images

    @PostMapping("/fileUpload")
    public String fileUpload(@RequestParam("fileName") MultipartFile file) {
        // 1. 校验文件
        if (file.isEmpty()) {
            throw new RuntimeException("上传文件不能为空");
        }

        try {
            // 2. 获取原始文件名并生成唯一文件名（避免重名）
            String originalFilename = file.getOriginalFilename();
            String extension = originalFilename.substring(originalFilename.lastIndexOf("."));  // 获取文件后缀
            String uniqueFileName = UUID.randomUUID().toString() + extension;  // 生成UUID+后缀的唯一文件名

            // 3. 创建存储目录（若不存在则自动创建）
            File uploadDir = new File(basePath);
            if (!uploadDir.exists()) {
                uploadDir.mkdirs();
            }

            // 4. 保存文件到本地目录
            File destFile = new File(basePath + File.separator + uniqueFileName);
            file.transferTo(destFile);

            // 5. 动态生成完整访问URL
            // 拼接访问URL：访问前缀 + 文件分隔符 + 唯一文件名
            String imageUrl = accessPrefix + "/" + uniqueFileName;

            return imageUrl;  // 返回动态生成的URL
        } catch (IOException e) {
            throw new RuntimeException("文件上传失败：" + e.getMessage());
        }
    }

}